<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>

    // 假死循环：和自变量无关;不知循环次数;在循环时达到某个条件就跳出整个循环
    // for(let i=0;i==0;i){
    //   if(某一条件){
    //     break;
    //   }
    // }

    /***********************************
            1.请写出javascript的三种循环
            ***********************************/
    //  for(){}:
    // for(自变量初始值;条件;自变量变化规律){
    //   每次循环的做的事
    // }

    // while(){}：
    // 自变量初始值
    // while(条件){
    //   每次循环的做的事
    //   自变量变化规律
    // }

    // do{}while():
    // 自变量初始值
    // do{
    //   每次循环的做的事
    //   自变量变化规律
    // }while(条件)
    /***********************************
    2.请写出break和continue作用和区别
    ***********************************/












    /***********************************
    3.循环输出1-100 里奇数
    ***********************************/
    // for (let num = 1; num <= 100; num++) {
    // if (num % 2) {
    //   console.log(`${num}是奇数`);
    // }
    // 现在要改成简写：条件正确做事情，错误就不作为
    // 将上面简写成下面
    // (num % 2) && (console.log(`${num}是奇数`));

    // 条件错误做事情，正确就不作为
    // (!(num % 2)) || (console.log(`${num}是奇数`));

    // 条件不管正确还是错误，都执行
    // 三目运算符
    // num % 2 ? console.log(`${num}是奇数`) : console.log(`${num}是偶数`);

    // }


    /***********************************
    3.有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求出这个数列的前20项之和。
    (程序分析：请抓住分子与分母的变化规律。)
    ***********************************/
    // let fm = 1;
    // let fz = 2;
    // let sum = fz / fm;
    // for (let num = 2; num <= 20; num++) {
    //   [fz, fm] = [fz + fm, fz];
    //   sum += fz / fm;
    // }
    // console.log(sum);

    /***********************************
    4.有一座桥，当你身上所拥有的钱大于30000时，每过一次桥则需要支付3000元。
    当你身上的钱小于或等于30000时，每过一次桥则需要支付你身上10%的钱。已知有一个人身上有33000元，问此人能过这座桥多少次之后，身上的钱会少于100块?
    ***********************************/
    // 这里不知道次数，用假死循环

    // let money = 33000;
    let count = 0;
    // for (let x = 0; x == 0; x) {
    //   if (money < 100) {
    //     break;
    //   }
    //   if (money > 30000) {
    //     money -= 3000;
    //   } else {
    //     money *= 0.9;
    //   }
    //   count++;
    // }
    // console.log(count);

    // while (money) {
    //   if (money < 100) {
    //     break;
    //   }
    // if (money > 30000) {
    //   money -= 3000;
    // } else {
    //   money *= 0.9;
    // }
    // count++;
    // }
    // console.log(count);

    //如果用普通for循环:
    for (let money = 33000; money >= 100;) {
      // if (money > 30000) {
      //   money -= 3000;
      // } else {
      //   money *= 0.9;
      // }
      // count++;

      money > 30000 ? money -= 3000 : money *= 0.9;
      count++;
    }
    // console.log(count);

    /***********************************
    5.小明去存1000钱，每天会产生1%的利息，求问，30天后，小明可以拿回多少钱
    ***********************************/



    /***********************************
    6.小明题目升级版，小明拿着1000块在周一买入基金，一开户立给10块红利，
    逢周六日没有利息，平时利息为1%，请问30天后，小明可以拿回多少钱？
    ***********************************/

    /***********************************
    7.乘法口诀表:
    让学生输出4种方向的乘法口诀表
    ***********************************/

    /***********************************
    8.给一个不多于5位的正整数，要求：一、求它是几位数，二、逆序打印出各位数字。
    ***********************************/
    // let num = 12345;
    // let str = num.toString();
    // for (let i = str.length - 1; i >= 0; i--) {
    //   console.log(str[i]);
    // }

    // 转为字符串3种方法
    // String(num);
    // console.log(String(num).length);
    // toString();
    // ""+num;


    // 字符串转数组
    // str.split();

    /***********************************
    9.求100个随机数之和，随机数要求为0—9的整数
    ***********************************/
    // Math.ceil(Math.random() * 9); //[0,9)


    /***********************************
    10.通过键盘输入一个任意的正整数（建议这个数比3大），
    在网页中输出3至这个数之间所有能被3整除的数字。
    ***********************************/
    // let num=77;
    // 3-77 %3 ==0;


    /**********************************************
    11.黑白棋   奇数行 && 奇数列 || 偶数行 && 偶数列
    **********************************************/

    /**********************************************
    12.(提高题)输入一整数A，判断它是否素数（除了自己和1之外，不能被其它数整数）
    **********************************************/
    let num = 20;
    // num% 2~(num-1)==0 不是质数
    for (let i = 2; i < num; i++) {
      if (num % i == 0) {
        console.log(i + "不是质数");
      }
    }


    /***********************************
    13.(提高题)将100元整钞换成20元、10元、5元、2元、1元零钱，要求零钱总张数为30张，求有多少种换法？假如要求每种纸币必须至少有一张，又有多少种换法呢？
    ***********************************/


  </script>

</body>

</html>